#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/wait.h>



//程序替换
// int main()
// {
//     execl("/bin/ls","ls",NULL);
//     printf("替换失败！\n");
//     exit(1);
//     return 0;
// }

//int main(int argc,char* argv[],char* envp[])
//{
//    int num = execvp(argv[1],argv+1);
//    printf("替换失败！ %d\n",num);
//    return 0;
//}

// int main()
// {
//     pid_t id = fork();
//     if(id == 0)
//     {
//         int ret = ex
//     }
//     return 0;
// }

int main()
{
  pid_t id = fork();
  putenv("MYPATH=zmy668");
  if(id == 0)
  {
    extern char **environ;
    pid_t num = execle("./test/test","test",NULL,environ);
    if(num == -1)
    {
      printf("执行失败! 输入指令异常! 反馈为: %d\n",num);
      int* ptr = NULL; //设置异常，替换失败将会执行!
      *ptr = 0;
    }
    exit(-1);
  }
  int status = 0;
  pid_t ret = waitpid(id,&status,0);
  if(WIFEXITED(status))
  {
    printf("\n子进程正常退出! 子进程pid:%d 子进程退出码:%d 子进程终止信号:%d \n\n",ret,WEXITSTATUS(status),status&0x7F);
  }
  else 
  {
    printf("\n子进程异常退出! 子进程pid:%d 子进程退出码:%d 子进程终止信号:%d \n\n",ret,WEXITSTATUS(status),status&0x7F);
  }
  return 0;
}